汉诺塔的汇编源代码

;汇编实验四 HANOI塔谜题
;采用栈传递参数,n表示搬动个数。第一次调用时栈的情况为: (输入的数),one,two,three,IP,ax,dx,bp
;在子程序hanoi中[bp+14]每次和1比较,相等则跳出
;不相等则把[bp+14]中的数减1,再进行递归。
;子函数AscToBin用来把字符转换成数字保存在 Bin中,在增加盘子的移动数目时用了BCD码对chNum中的最后一个字符进行加一
;并用指令AAA把它转换成0~9之间,如果高位ha为1的话(表示有进位),则dec  si,继续操作
;
;           

.model small,stdcall
.stack 64

.data
Bin  dw 0      ;保存用户输入的大小
chNum  db 10 dup('0'),'$'     ;保存移动盘子的个数
one  dw 'A'      ;符号
two   dw 'B'
three  dw 'C'
strShow  db '->$'      
chLine  db 0dh,0ah,'$'     ;换行
prompt  db 'Please input the plate num(1~99): $'  ;提示
chTimes1 db 0dh,0ah,'I have moved $'
chTimes2 db ' times',0dh,0ah,'$'
    

InputList LABEL   BYTE      ;用户输入的大小&

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值